/*
 * Copyright (c) 2022 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { Arg } from './arg';
import { Code } from './code';
import { FrequentedBlock } from './frequented_block';
import { Reg } from './reg';
import { below, equal, GP, locked, nonZero, normal, notEqual, spill } from './symbols';
import { Inst, InstDateModel, and64, branch64, branchTest64, jump, move, move32, oops, patch, ret64, xor64 } from './inst';

const AIRJS_LOWVALUE_KIND_ONE: number = 276424800;
const AIRJS_LOWVALUE_KIND_TWO: number = 276327648;
const AIRJS_LOWVALUE_KIND_THREE: number = 276321024;
const AIRJS_LOWVALUE_KIND_FOUR: number = 276741160;
const AIRJS_LOWVALUE_KIND_FIVE: number = 276168608;
const AIRJS_LOWVALUE_KIND_SIX: number = 275739616;
const AIRJS_LOWVALUE_KIND_SEVEN: number = 276645872;
const AIRJS_LOWVALUE_KIND_EIGHT: number = 276646496;

const AIRJS_ARG_VALUE_UN_9: number = -9;
const AIRJS_ARG_VALUE_5: number = 5;
const AIRJS_ARG_VALUE_6: number = 6;
const AIRJS_ARG_VALUE_10: number = 10;
const AIRJS_ARG_VALUE_20: number = 20;
const AIRJS_ARG_VALUE_21: number = 21;
const AIRJS_ARG_VALUE_23: number = 23;
const AIRJS_ARG_VALUE_372: number = 372;
const AIRJS_ARG_VALUE_419: number = 419;
const AIRJS_ARG_VALUE_468: number = 468;

const AIRJS_ARG_OFFSET_24: number = 24;
const AIRJS_ARG_OFFSET_48: number = 48;
const AIRJS_ARG_OFFSET_56: number = 56;
const AIRJS_ARG_OFFSET_72: number = 72;

const AIRJS_BETYSIZE_NUM_UN_2: number = -2;
const AIRJS_BETYSIZE_NUM_2: number = 2;
const AIRJS_BETYSIZE_NUM_160: number = 160;
const AIRJS_BETYSIZE_NUM_8: number = 8;
const AIRJS_BETYSIZE_NUM_16: number = 16;
const AIRJS_BETYSIZE_NUM_32: number = 32;
const AIRJS_BETYSIZE_NUM_40: number = 40;
const AIRJS_BETYSIZE_NUM_UN_40: number = -40;
const AIRJS_BETYSIZE_NUM_64: number = 64;

const AIRJS_ONE_OF_HEIGHT_VALUE: number = -65536;

export function createPayloadAirJSACLj8C(): Code {
  let code = new Code();
  let bb0 = code.addBasicBlock();
  let bb1 = code.addBasicBlock();
  let bb2 = code.addBasicBlock();
  let bb3 = code.addBasicBlock();
  let bb4 = code.addBasicBlock();
  let bb5 = code.addBasicBlock();
  let bb6 = code.addBasicBlock();
  let bb7 = code.addBasicBlock();
  let bb8 = code.addBasicBlock();
  let bb9 = code.addBasicBlock();
  let bb10 = code.addBasicBlock();
  let bb11 = code.addBasicBlock();
  let bb12 = code.addBasicBlock();
  let bb13 = code.addBasicBlock();
  let bb14 = code.addBasicBlock();
  let bb15 = code.addBasicBlock();
  let slot0 = code.addStackSlot(AIRJS_BETYSIZE_NUM_160, locked);
  let slot1 = code.addStackSlot(AIRJS_BETYSIZE_NUM_8, spill);
  let slot2 = code.addStackSlot(AIRJS_BETYSIZE_NUM_8, spill);
  let slot3 = code.addStackSlot(AIRJS_BETYSIZE_NUM_8, spill);
  let slot4 = code.addStackSlot(AIRJS_BETYSIZE_NUM_40, locked);
  slot4.setOffsetFromFP(AIRJS_BETYSIZE_NUM_UN_40);
  let tmp61 = code.newCodeTmp(GP);
  let tmp60 = code.newCodeTmp(GP);
  let tmp59 = code.newCodeTmp(GP);
  let tmp58 = code.newCodeTmp(GP);
  let tmp57 = code.newCodeTmp(GP);
  let tmp56 = code.newCodeTmp(GP);
  let tmp55 = code.newCodeTmp(GP);
  let tmp54 = code.newCodeTmp(GP);
  let tmp53 = code.newCodeTmp(GP);
  let tmp52 = code.newCodeTmp(GP);
  let tmp51 = code.newCodeTmp(GP);
  let tmp50 = code.newCodeTmp(GP);
  let tmp49 = code.newCodeTmp(GP);
  let tmp48 = code.newCodeTmp(GP);
  let tmp47 = code.newCodeTmp(GP);
  let tmp46 = code.newCodeTmp(GP);
  let tmp45 = code.newCodeTmp(GP);
  let tmp44 = code.newCodeTmp(GP);
  let tmp43 = code.newCodeTmp(GP);
  let tmp42 = code.newCodeTmp(GP);
  let tmp41 = code.newCodeTmp(GP);
  let tmp40 = code.newCodeTmp(GP);
  let tmp39 = code.newCodeTmp(GP);
  let tmp38 = code.newCodeTmp(GP);
  let tmp37 = code.newCodeTmp(GP);
  let tmp36 = code.newCodeTmp(GP);
  let tmp35 = code.newCodeTmp(GP);
  let tmp34 = code.newCodeTmp(GP);
  let tmp33 = code.newCodeTmp(GP);
  let tmp32 = code.newCodeTmp(GP);
  let tmp31 = code.newCodeTmp(GP);
  let tmp30 = code.newCodeTmp(GP);
  let tmp29 = code.newCodeTmp(GP);
  let tmp28 = code.newCodeTmp(GP);
  let tmp27 = code.newCodeTmp(GP);
  let tmp26 = code.newCodeTmp(GP);
  let tmp25 = code.newCodeTmp(GP);
  let tmp24 = code.newCodeTmp(GP);
  let tmp23 = code.newCodeTmp(GP);
  let tmp22 = code.newCodeTmp(GP);
  let tmp21 = code.newCodeTmp(GP);
  let tmp20 = code.newCodeTmp(GP);
  let tmp19 = code.newCodeTmp(GP);
  let tmp18 = code.newCodeTmp(GP);
  let tmp17 = code.newCodeTmp(GP);
  let tmp16 = code.newCodeTmp(GP);
  let tmp15 = code.newCodeTmp(GP);
  let tmp14 = code.newCodeTmp(GP);
  let tmp13 = code.newCodeTmp(GP);
  let tmp12 = code.newCodeTmp(GP);
  let tmp11 = code.newCodeTmp(GP);
  let tmp10 = code.newCodeTmp(GP);
  let tmp9 = code.newCodeTmp(GP);
  let tmp8 = code.newCodeTmp(GP);
  let tmp7 = code.newCodeTmp(GP);
  let tmp6 = code.newCodeTmp(GP);
  let tmp5 = code.newCodeTmp(GP);
  let tmp4 = code.newCodeTmp(GP);
  let tmp3 = code.newCodeTmp(GP);
  let tmp2 = code.newCodeTmp(GP);
  let tmp1 = code.newCodeTmp(GP);
  let tmp0 = code.newCodeTmp(GP);
  let instObject: Inst;
  let argObject: Arg;
  bb0.successors.push(new FrequentedBlock(bb1, normal));
  bb0.successors.push(new FrequentedBlock(bb15, normal));
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_LOWVALUE_KIND_ONE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbp, AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbp);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.scratch, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbp, AIRJS_ARG_OFFSET_72);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbp, AIRJS_BETYSIZE_NUM_64);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbp, AIRJS_ARG_OFFSET_56);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbp, AIRJS_ARG_OFFSET_48);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_BETYSIZE_NUM_2, AIRJS_ONE_OF_HEIGHT_VALUE);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbp, AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rax, AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(0, AIRJS_ONE_OF_HEIGHT_VALUE);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rcx, AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rcx, AIRJS_BETYSIZE_NUM_40);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_LOWVALUE_KIND_TWO, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.r8, AIRJS_ARG_VALUE_5);
  instObject.args.push(argObject);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_21);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.r12, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_372);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.r12, AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rax, AIRJS_BETYSIZE_NUM_UN_40);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_LOWVALUE_KIND_THREE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_ARG_OFFSET_72);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_BETYSIZE_NUM_64);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_ARG_OFFSET_56);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_ARG_OFFSET_48);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_BETYSIZE_NUM_40);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(xor64);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_6);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(AIRJS_BETYSIZE_NUM_UN_2);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot2, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(AIRJS_BETYSIZE_NUM_UN_2);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r9);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r9);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot3, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(branchTest64);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  bb1.successors.push(new FrequentedBlock(bb3, normal));
  bb1.successors.push(new FrequentedBlock(bb2, normal));
  bb1.predecessors.push(bb0);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.r8, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_468);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb1.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.r8, AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb1.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_LOWVALUE_KIND_FOUR, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb1.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rcx, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb1.append(instObject);
  instObject = new Inst(branch64);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rax, AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb1.append(instObject);
  bb2.predecessors.push(bb1);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb2.append(instObject);
  instObject = new Inst(oops);
  bb2.append(instObject);
  bb3.successors.push(new FrequentedBlock(bb4, normal));
  bb3.successors.push(new FrequentedBlock(bb7, normal));
  bb3.predecessors.push(bb1);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.r8, AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  bb3.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, AIRJS_ARG_VALUE_5);
  instObject.args.push(argObject);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_23);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb3.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_LOWVALUE_KIND_SIX, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb3.append(instObject);
  instObject = new Inst(branch64);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb3.append(instObject);
  bb4.successors.push(new FrequentedBlock(bb5, normal));
  bb4.successors.push(new FrequentedBlock(bb6, normal));
  bb4.predecessors.push(bb3);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, 0);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rax, AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot1, 0);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_LOWVALUE_KIND_SEVEN, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_LOWVALUE_KIND_EIGHT, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(AIRJS_BETYSIZE_NUM_2);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  bb4.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot1, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(xor64);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_6);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(AIRJS_BETYSIZE_NUM_UN_2);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot1, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb4.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb4.append(instObject);
  instObject = new Inst(branchTest64);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb4.append(instObject);
  bb5.successors.push(new FrequentedBlock(bb8, normal));
  bb5.predecessors.push(bb4);
  instObject = new Inst(move);
  argObject = Arg.createStack(slot1, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb5.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb5.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb5.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rcx, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_419);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb5.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(AIRJS_LOWVALUE_KIND_FIVE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(AIRJS_BETYSIZE_NUM_2);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  bb5.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot1, 0);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb5.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(jump);
  bb5.append(instObject);
  bb6.successors.push(new FrequentedBlock(bb8, normal));
  bb6.predecessors.push(bb4);
  instObject = new Inst(move);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb6.append(instObject);
  instObject = new Inst(jump);
  bb6.append(instObject);
  bb7.successors.push(new FrequentedBlock(bb12, normal));
  bb7.successors.push(new FrequentedBlock(bb9, normal));
  bb7.predecessors.push(bb3);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_5);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_40);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_48);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_56);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_24);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_BETYSIZE_NUM_40);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_48);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(AIRJS_ARG_OFFSET_56);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  bb7.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb7.append(instObject);
  instObject = new Inst(branchTest64);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  bb7.append(instObject);
  bb8.successors.push(new FrequentedBlock(bb13, normal));
  bb8.successors.push(new FrequentedBlock(bb10, normal));
  bb8.predecessors.push(bb6);
  bb8.predecessors.push(bb5);
  instObject = new Inst(branchTest64);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  bb8.append(instObject);
  bb9.successors.push(new FrequentedBlock(bb11, normal));
  bb9.predecessors.push(bb7);
  instObject = new Inst(jump);
  bb9.append(instObject);
  bb10.successors.push(new FrequentedBlock(bb11, normal));
  bb10.predecessors.push(bb8);
  instObject = new Inst(jump);
  bb10.append(instObject);
  bb11.predecessors.push(bb9);
  bb11.predecessors.push(bb10);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(below);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rax, AIRJS_ARG_VALUE_5);
  instObject.args.push(argObject);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_20);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb11.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb11.append(instObject);
  instObject = new Inst(oops);
  bb11.append(instObject);
  bb12.successors.push(new FrequentedBlock(bb14, normal));
  bb12.predecessors.push(bb7);
  instObject = new Inst(jump);
  bb12.append(instObject);
  bb13.successors.push(new FrequentedBlock(bb14, normal));
  bb13.predecessors.push(bb8);
  instObject = new Inst(jump);
  bb13.append(instObject);
  bb14.predecessors.push(bb12);
  bb14.predecessors.push(bb13);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb14.append(instObject);
  instObject = new Inst(and64);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_UN_9);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb14.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createImm(AIRJS_BETYSIZE_NUM_2);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, AIRJS_BETYSIZE_NUM_64));
  bb14.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb14.append(instObject);
  instObject = new Inst(ret64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb14.append(instObject);
  bb15.predecessors.push(bb0);
  instObject = new Inst(move);
  argObject = Arg.createImm(AIRJS_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb15.append(instObject);
  instObject = new Inst(ret64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb15.append(instObject);
  return code;
}
